]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
appDisplay: Use a proper string key for the app search provider
authorJasper St. Pierre <jstpierre@mecheye.net>
Sat, 9 Feb 2013 03:08:13 +0000 (22:08 -0500)
committerJasper St. Pierre <jstpierre@mecheye.net>
Wed, 30 Oct 2013 17:00:47 +0000 (13:00 -0400)
Since we're going to be caching results based on the result ID,
we need to return a string-based result ID to cache on.

https://bugzilla.gnome.org/show_bug.cgi?id=704912

js/ui/appDisplay.js
src/shell-app-system.c

index 22e805a7099c6b8c088181265c8ba9bab2279596..2889aba616286113353d605b3e4096a27e19d1dc 100644 (file)
@@ -871,8 +871,8 @@ const AppSearchProvider = new Lang.Class({
     getResultMetas: function(apps, callback) {
         let metas = [];
         for (let i = 0; i < apps.length; i++) {
-            let app = apps[i];
-            metas.push({ 'id': app,
+            let app = this._appSys.lookup_app(apps[i]);
+            metas.push({ 'id': app.get_id(),
                          'name': app.get_name(),
                          'createIcon': function(size) {
                              return app.create_icon_texture(size);
@@ -894,7 +894,8 @@ const AppSearchProvider = new Lang.Class({
         this.searchSystem.setResults(this, this._appSys.subsearch(previousResults, terms));
     },
 
-    activateResult: function(app) {
+    activateResult: function(result) {
+        let app = this._appSys.lookup_app(result);
         let event = Clutter.get_current_event();
         let modifiers = event ? event.get_state() : 0;
         let openNewWindow = modifiers & Clutter.ModifierType.CONTROL_MASK;
@@ -914,7 +915,7 @@ const AppSearchProvider = new Lang.Class({
     },
 
     createResultObject: function (resultMeta, terms) {
-        let app = resultMeta['id'];
+        let app = this._appSys.lookup_app(resultMeta['id']);
         return new AppIcon(app);
     }
 });
index c56d602ab4be8cee7210d19e1779a58a4e8a896e..742fc68e0689271151780390f88af46346b53233 100644 (file)
@@ -681,13 +681,22 @@ sort_and_concat_results (ShellAppSystem *system,
                          GSList         *prefix_matches,
                          GSList         *substring_matches)
 {
+  GSList *matches = NULL;
+  GSList *l;
+
   prefix_matches = g_slist_sort_with_data (prefix_matches,
                                            compare_apps_by_usage,
                                            system);
   substring_matches = g_slist_sort_with_data (substring_matches,
                                               compare_apps_by_usage,
                                               system);
-  return g_slist_concat (prefix_matches, substring_matches);
+
+  for (l = substring_matches; l != NULL; l = l->next)
+    matches = g_slist_prepend (matches, (char *) shell_app_get_id (SHELL_APP (l->data)));
+  for (l = prefix_matches; l != NULL; l = l->next)
+    matches = g_slist_prepend (matches, (char *) shell_app_get_id (SHELL_APP (l->data)));
+
+  return g_slist_reverse (matches);
 }
 
 /**
@@ -734,7 +743,6 @@ search_tree (ShellAppSystem *self,
   g_slist_free_full (normalized_terms, g_free);
 
   return sort_and_concat_results (self, prefix_results, substring_results);
-
 }
 
 /**
@@ -744,7 +752,7 @@ search_tree (ShellAppSystem *self,
  *
  * Search through applications for the given search terms.
  *
- * Returns: (transfer container) (element-type ShellApp): List of applications
+ * Returns: (transfer container) (element-type utf8): List of applications
  */
 GSList *
 shell_app_system_initial_search (ShellAppSystem  *self,
@@ -756,14 +764,14 @@ shell_app_system_initial_search (ShellAppSystem  *self,
 /**
  * shell_app_system_subsearch:
  * @system: A #ShellAppSystem
- * @previous_results: (element-type ShellApp): List of previous results
+ * @previous_results: (element-type utf8): List of previous results
  * @terms: (element-type utf8): List of terms, logical AND
  *
  * Search through a previous result set; for more information, see
  * js/ui/search.js. Note that returned strings are only valid until
  * a return to the main loop.
  *
- * Returns: (transfer container) (element-type ShellApp): List of application identifiers
+ * Returns: (transfer container) (element-type utf8): List of application identifiers
  */
 GSList *
 shell_app_system_subsearch (ShellAppSystem   *system,
@@ -779,8 +787,8 @@ shell_app_system_subsearch (ShellAppSystem   *system,
 
   for (iter = previous_results; iter; iter = iter->next)
     {
-      ShellApp *app = iter->data;
-      
+      ShellApp *app = shell_app_system_lookup_app (system, iter->data);
+
       _shell_app_do_match (app, normalized_terms,
                            &prefix_results,
                            &substring_results);